Software installation or upgrade operations often are completed by way of executing an installation software program. In particular, executable code for installing or updating the software is developed and compiled into an installation package that, when executed, install or update any components needed to execute the updated or installed software package. These installation packages can be distributed as .msi files, .exe files, and/or other formats. While this format is convenient and suitable for most purposes, execution of the installation packages can be time consuming and distribution of the installation packages can consume a large amount of network resources due to the relatively large size of the installation package.
In some hosted computing environments, software can be hosted by a number of servers or other computing devices. When new versions, updates, or patches for the hosted software are developed or made available, multiple servers or other devices hosting the software may need to be updated. Because of the time- and resource-consuming nature of the installation packages typically distributed for making these changes, the updating of hosted software can consume large amounts of resources.
Furthermore, because multiple devices may cooperate to provide functionality associated with hosted software, failures or errors experienced during an installation or update operation with respect to any of the devices may impact performance of the updated software as a whole. If failures or errors are not detected after upgrading or installing the various components of the hosted software, expensive and resource-consuming uninstallation and/or rollback operations may need to be performed to remove the application or upgrade. Because hosted software may evolve and may be updated frequently, these resource-intensive upgrade and installation processes can be difficult to accommodate.
It is with respect to these and other considerations that the disclosure made herein is presented.